﻿<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

   <!--SrollViewer ScrollBar Repeat Buttons (at each end)-->
   <Style x:Key="ScrollBarLineButton"
          TargetType="{x:Type RepeatButton}">
      <Setter Property="SnapsToDevicePixels"
              Value="True" />
      <Setter Property="OverridesDefaultStyle"
              Value="true" />
      <Setter Property="Focusable"
              Value="false" />
      <Setter Property="Template">
         <Setter.Value>
            <ControlTemplate TargetType="{x:Type RepeatButton}">
               <Border Name="Border"
                       BorderThickness="0"
                       Background="{DynamicResource SecondaryBrush}">
                  <Path HorizontalAlignment="Center"
                        VerticalAlignment="Center"
                        Fill="{DynamicResource AlternateBrush}"
                        Data="{Binding Path=Content, RelativeSource={RelativeSource TemplatedParent}}" />
               </Border>
               <ControlTemplate.Triggers>
                  <Trigger Property="IsMouseOver"
                           Value="True">
                     <Setter TargetName="Border"
                             Property="Background"
                             Value="{DynamicResource SecondaryHoverBrush}" />
                  </Trigger>
                  <Trigger Property="IsPressed"
                           Value="true">
                     <Setter TargetName="Border"
                             Property="Background"
                             Value="{DynamicResource SecondaryClickBrush}" />
                  </Trigger>
                  <Trigger Property="IsEnabled"
                           Value="false">
                     <Setter Property="Foreground"
                             Value="{DynamicResource DisabledForegroundBrush}" />
                  </Trigger>
               </ControlTemplate.Triggers>
            </ControlTemplate>
         </Setter.Value>
      </Setter>
   </Style>

   <!--SrollViewer ScrollBar Repeat Buttons (The part in the middle, not the thumb the long area between the buttons )-->
   <Style x:Key="ScrollBarPageButton"
          TargetType="{x:Type RepeatButton}">
      <Setter Property="SnapsToDevicePixels"
              Value="True" />
      <Setter Property="OverridesDefaultStyle"
              Value="true" />
      <Setter Property="IsTabStop"
              Value="false" />
      <Setter Property="Focusable"
              Value="false" />
      <Setter Property="Template">
         <Setter.Value>
            <ControlTemplate TargetType="{x:Type RepeatButton}">
               <Border Background="Transparent" />
            </ControlTemplate>
         </Setter.Value>
      </Setter>
   </Style>

   <!--ScrollViewer ScrollBar Thumb, that part that can be dragged up/down or left/right Buttons-->
   <Style x:Key="ScrollBarThumb"
          TargetType="{x:Type Thumb}">
      <Setter Property="SnapsToDevicePixels"
              Value="True" />
      <Setter Property="OverridesDefaultStyle"
              Value="true" />
      <Setter Property="IsTabStop"
              Value="false" />
      <Setter Property="Focusable"
              Value="false" />
      <Setter Property="Template">
         <Setter.Value>
            <ControlTemplate TargetType="{x:Type Thumb}">
               <Border Background="{DynamicResource AlternateBrush}"
                       x:Name="Border"
                       BorderThickness="0" />
               <ControlTemplate.Triggers>
                  <Trigger Property="IsMouseOver"
                           Value="True">
                     <Setter TargetName="Border"
                             Property="Background"
                             Value="{DynamicResource AlternateHoverBrush}" />
                  </Trigger>
                  <Trigger Property="IsDragging"
                           Value="true">
                     <Setter TargetName="Border"
                             Property="Background"
                             Value="{DynamicResource AlternateClickBrush}" />
                  </Trigger>
                  <Trigger Property="IsEnabled"
                           Value="false">
                     <Setter TargetName="Border"
                             Property="Background"
                             Value="{DynamicResource DisabledBackgroundBrush}" />
                  </Trigger>
               </ControlTemplate.Triggers>
            </ControlTemplate>
         </Setter.Value>
      </Setter>
   </Style>

   <ControlTemplate x:Key="VerticalScrollBar"
                    TargetType="{x:Type ScrollBar}">
      <Grid>
         <Grid.RowDefinitions>
            <RowDefinition MaxHeight="18" />
            <RowDefinition Height="0.00001*" />
            <RowDefinition MaxHeight="18" />
         </Grid.RowDefinitions>
         <Border Grid.RowSpan="3"
                 Background="{DynamicResource SecondaryBrush}" />
         <RepeatButton Grid.Row="0"
                       Style="{StaticResource ScrollBarLineButton}"
                       Height="18"
                       Command="ScrollBar.LineUpCommand"
                       Content="M 0 4 L 8 4 L 4 0 Z" />
         <Track Name="PART_Track"
                Grid.Row="1"
                IsDirectionReversed="true">
            <Track.DecreaseRepeatButton>
               <RepeatButton Style="{StaticResource ScrollBarPageButton}"
                             Command="ScrollBar.PageUpCommand" />
            </Track.DecreaseRepeatButton>
            <Track.Thumb>
               <Thumb Style="{StaticResource ScrollBarThumb}"
                      Margin="1,0,1,0" />
            </Track.Thumb>
            <Track.IncreaseRepeatButton>
               <RepeatButton Style="{StaticResource ScrollBarPageButton}"
                             Command="ScrollBar.PageDownCommand" />
            </Track.IncreaseRepeatButton>
         </Track>
         <RepeatButton Grid.Row="2"
                       Style="{StaticResource ScrollBarLineButton}"
                       Height="18"
                       Command="ScrollBar.LineDownCommand"
                       Content="M 0 0 L 4 4 L 8 0 Z" />
      </Grid>
   </ControlTemplate>

   <!--HorizontalScrollBar Template using the previously created Templates-->
   <ControlTemplate x:Key="HorizontalScrollBar"
                    TargetType="{x:Type ScrollBar}">
      <Grid>
         <Grid.ColumnDefinitions>
            <ColumnDefinition MaxWidth="18" />
            <ColumnDefinition Width="0.00001*" />
            <ColumnDefinition MaxWidth="18" />
         </Grid.ColumnDefinitions>
         <Border Grid.ColumnSpan="3"
                 Background="{DynamicResource SecondaryBrush}" />
         <RepeatButton Grid.Column="0"
                       Style="{StaticResource ScrollBarLineButton}"
                       Width="18"
                       Command="ScrollBar.LineLeftCommand"
                       Content="M 4 0 L 4 8 L 0 4 Z" />
         <Track Name="PART_Track"
                Grid.Column="1"
                IsDirectionReversed="False">
            <Track.DecreaseRepeatButton>
               <RepeatButton Style="{StaticResource ScrollBarPageButton}"
                             Command="ScrollBar.PageLeftCommand" />
            </Track.DecreaseRepeatButton>
            <Track.Thumb>
               <Thumb Margin="0,1,0,1"
                      Style="{StaticResource ScrollBarThumb}" />
            </Track.Thumb>
            <Track.IncreaseRepeatButton>
               <RepeatButton Style="{StaticResource ScrollBarPageButton}"
                             Command="ScrollBar.PageRightCommand" />
            </Track.IncreaseRepeatButton>
         </Track>
         <RepeatButton Grid.Column="2"
                       Style="{StaticResource ScrollBarLineButton}"
                       Width="18"
                       Command="ScrollBar.LineRightCommand"
                       Content="M 0 0 L 4 4 L 0 8 Z" />
      </Grid>
   </ControlTemplate>

   <!--Style for overall  ScrollBar-->
   <Style x:Key="{x:Type ScrollBar}"
          TargetType="{x:Type ScrollBar}">
      <Setter Property="SnapsToDevicePixels"
              Value="True" />
      <Setter Property="OverridesDefaultStyle"
              Value="true" />
      <Style.Triggers>
         <Trigger Property="Orientation"
                  Value="Horizontal">
            <Setter Property="Width"
                    Value="Auto" />
            <Setter Property="Height"
                    Value="18" />
            <Setter Property="Template"
                    Value="{StaticResource HorizontalScrollBar}" />
         </Trigger>
         <Trigger Property="Orientation"
                  Value="Vertical">
            <Setter Property="Width"
                    Value="18" />
            <Setter Property="Height"
                    Value="Auto" />
            <Setter Property="Template"
                    Value="{StaticResource VerticalScrollBar}" />
         </Trigger>
      </Style.Triggers>
   </Style>

   <!--Style for overall  ScrollViewer-->
   <Style TargetType="{x:Type ScrollViewer}">
      <Setter Property="OverridesDefaultStyle"
              Value="True" />
      <Setter Property="Template">
         <Setter.Value>
            <ControlTemplate TargetType="{x:Type ScrollViewer}">
               <Grid>
                  <Grid.ColumnDefinitions>
                     <ColumnDefinition />
                     <ColumnDefinition Width="Auto" />
                  </Grid.ColumnDefinitions>
                  <Grid.RowDefinitions>
                     <RowDefinition />
                     <RowDefinition Height="Auto" />
                  </Grid.RowDefinitions>
                  <ScrollContentPresenter Grid.Row="0"
                                          Grid.Column="0" />
                  <ScrollBar Name="PART_VerticalScrollBar"
                             Grid.Column="1"
                             Grid.Row="0"
                             Value="{TemplateBinding VerticalOffset}"
                             Maximum="{TemplateBinding ScrollableHeight}"
                             ViewportSize="{TemplateBinding ViewportHeight}"
                             Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" />
                  <ScrollBar Name="PART_HorizontalScrollBar"
                             Orientation="Horizontal"
                             Grid.Row="1"
                             Grid.Column="0"
                             Value="{TemplateBinding HorizontalOffset}"
                             Maximum="{TemplateBinding ScrollableWidth}"
                             ViewportSize="{TemplateBinding ViewportWidth}"
                             Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" />
               </Grid>
            </ControlTemplate>
         </Setter.Value>
      </Setter>
   </Style>
   
</ResourceDictionary>